package com.zhuangjie.rider.utils;

import com.zhuangjie.rider.constant.IncomeCalculateConstant;

import java.math.BigDecimal;
import java.math.RoundingMode;

/**
 * 配送费用计算工具类
 */
public class DeliveryCostCalculator {
    /**
     * 计算配送费用
     *
     * @param distance 配送距离，单位公里
     * @return 配送费用（BigDecimal）
     */
    public static BigDecimal calculateDeliveryCost(double distance) {
        BigDecimal startDistance = BigDecimal.valueOf(IncomeCalculateConstant.START_DISTANCE);
        BigDecimal startPrice = BigDecimal.valueOf(IncomeCalculateConstant.START_PRICE);
        BigDecimal addPricePerKm = BigDecimal.valueOf(IncomeCalculateConstant.ADD_PRICE_PER_KM);

        // 创建一个BigDecimal对象表示配送距离
        BigDecimal decimalDistance = BigDecimal.valueOf(distance);

        // 如果距离小于或等于起步距离，费用就是起步价格
        if (decimalDistance.compareTo(startDistance) <= 0) {
            return startPrice.setScale(2, RoundingMode.HALF_UP);
        } else {
            // 超过起步距离的部分
            BigDecimal extraDistance = decimalDistance.subtract(startDistance);
            // 每0.1公里增加的费用
            BigDecimal costPerUnitDistance = addPricePerKm.multiply(BigDecimal.TEN);
            // 超过起步距离的费用
            BigDecimal extraCost = extraDistance.multiply(costPerUnitDistance);
            // 总费用是起步价格加上额外费用
            return startPrice.add(extraCost).setScale(2, RoundingMode.HALF_UP);
        }
    }
    
}
